package com.wish.contract.utils;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.io.Serializable;
import java.util.Collections;

/**
 * 笔者   Andy
 * 描述: // TODO
 * 时间: 2022-04-27 8:08
 */
public class Utils implements Serializable {
    public static void main(String[] args) {
        test();
    }
    public static void test() {
        FastAutoGenerator.create("jdbc:mysql://47.92.121.76:3306/wish_contract?useSSL=false&useUnicode=true;characterEncoding=UTF-8&serverTimezone=UTC",
                        "root", "cloud123.")
                .globalConfig(builder -> {
                    builder.author("Andy") // 设置作者
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("C:\\Users\\Andy\\Desktop\\wish\\wish-modules\\wish_contract\\src\\main\\java\\") // 指定输出目录
                            .dateType(DateType.TIME_PACK)
                            .commentDate("yyyy-MM-dd HH:mm:ss");
                })
                .packageConfig(builder -> {
                    builder.parent("com.wish.contract") // 设置父包名
                            .entity("po")
                            .service("service")
                            .serviceImpl("service.impl")
                            .mapper("mapper")
                            .xml("mappers")
                            .controller("controller")
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "C:\\Users\\Andy\\Desktop\\wish\\wish-modules\\wish_contract\\src\\main\\resources\\mappers")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("tb_contract") // 设置需要生成的表名
                            .addTablePrefix("tb_"); // 设置过滤表前缀
                })
                .strategyConfig(builder -> {
                    builder.entityBuilder().enableLombok().enableTableFieldAnnotation().build();
                })
                .strategyConfig(builder -> {
                    builder.controllerBuilder().enableRestStyle().build();
                })
                .strategyConfig(builder -> {
                    builder.mapperBuilder().enableMapperAnnotation().build();
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();

    }
}
